//package br.com.virtual.relatorio.dao.impl;
//
//import java.util.Calendar;
//import java.util.List;
//
//import br.com.virtual.base.dao.impl.BaseDaoImpl;
//import br.com.virtual.relatorio.dao.RelatorioDAO;
//import br.com.virtual.relatorio.model.ProdutoRelatorio;
//
//public class RelatorioProdutoDAOImpl extends BaseDaoImpl implements RelatorioDAO<ProdutoRelatorio>{
//
//	@Override
//	public List<ProdutoRelatorio> listByPeriod(Calendar start, Calendar end) {
//
//		StringBuilder query = new StringBuilder();
//		query.append(" SELECT new ");
//		query.append(ProdutoRelatorio.class.getName());
//		query.append("(p.id, p.nome, p.modelo, p.fabricante, sum(iv.quantidade) as quantidade, sum(total) as total, count(p.id) as numero_vendas)");
//		query.append(" FROM Venda v ");
//		query.append(" INNER join v.itens iv ");
//		query.append(" INNER join iv.produto p ");
//		query.append(" WHERE v.dataVenda BETWEEN :start AND :end ");
//		query.append(" GROUP by p ");
//		//query.append(" ORDER BY quantidade DESC, nome ASC ");
//
//
//		getManager().createQuery(
//				" SELECT new "
//				+ ProdutoRelatorio.class.getName()
//				+ " (p.id, p.nome, p.modelo, p.fabricante, sum(iv.quantidade) as quantidade, sum(total) as total, count(p.id) as numero_vendas) "
//				+ " FROM Venda v "
//				+ " INNER join FETCH v.itens iv "
//				+ " INNER join FETCH iv.produto p "		
//				, ProdutoRelatorio.class).getResultList();
//		
//		
//		
//		
//		return getManager()
//				.createQuery( query.toString(), ProdutoRelatorio.class )
//				.setParameter("start", start)
//				.setParameter("end", end)
//				.getResultList();
//	
//	} 
//
//}
